-- RAG配置表
CREATE TABLE IF NOT EXISTS rag_config (
    id BIGSERIAL PRIMARY KEY,                    -- 主键ID，自增
    rag_tag VARCHAR(100) NOT NULL UNIQUE,        -- RAG标签，唯一
    knowledge_name VARCHAR(200) NOT NULL,        -- 知识库名称
    creator VARCHAR(50) NOT NULL,                 -- 创建人
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 创建时间
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 更新时间
    enabled INTEGER DEFAULT 1,                   -- 启用状态 (1:启用, 0:禁用)
    deleted INTEGER DEFAULT 0,                  -- 删除状态 (1:已删除, 0:未删除)
    description TEXT,                            -- 描述信息
    file_path TEXT                               -- 文件路径
);

-- 创建索引
CREATE INDEX IF NOT EXISTS idx_rag_config_tag ON rag_config(rag_tag);
CREATE INDEX IF NOT EXISTS idx_rag_config_creator ON rag_config(creator);
CREATE INDEX IF NOT EXISTS idx_rag_config_enabled ON rag_config(enabled);
CREATE INDEX IF NOT EXISTS idx_rag_config_deleted ON rag_config(deleted);
CREATE INDEX IF NOT EXISTS idx_rag_config_create_time ON rag_config(create_time);

-- 创建更新时间触发器
CREATE OR REPLACE FUNCTION update_rag_config_update_time()
RETURNS TRIGGER AS $$
BEGIN
    NEW.update_time = CURRENT_TIMESTAMP;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trigger_rag_config_update_time
    BEFORE UPDATE ON rag_config
    FOR EACH ROW
    EXECUTE FUNCTION update_rag_config_update_time();

-- 插入测试数据
INSERT INTO rag_config (rag_tag, knowledge_name, creator, description) VALUES
('风景类', '风景知识库', 'admin', '包含各种风景相关的知识内容'),
('学生类', '学生知识库', 'admin', '包含学生相关的知识内容'),
('技术类', '技术知识库', 'admin', '包含技术相关的知识内容');
